package com.example.student_manager_backend.repository;

import com.example.student_manager_backend.entity.Score;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 成绩数据访问层
 * 提供对成绩实体的基本CRUD操作和自定义查询方法
 */
@Repository
public interface ScoreRepository extends JpaRepository<Score, Long>, JpaSpecificationExecutor<Score> {
    
    /**
     * 根据学生ID查询成绩列表
     *
     * @param studentId 学生ID
     * @return 成绩列表
     */
    List<Score> findByStudentId(String studentId);

    /**
     * 根据课程ID查询成绩列表
     *
     * @param courseId 课程ID
     * @return 成绩列表
     */
    List<Score> findByCourseId(String courseId);

    /**
     * 根据学生ID和课程ID查询成绩
     *
     * @param studentId 学生ID
     * @param courseId 课程ID
     * @return 成绩对象
     */
    Score findByStudentIdAndCourseId(String studentId, String courseId);

    /**
     * 根据成绩等级查询成绩列表
     *
     * @param grade 成绩等级
     * @return 成绩列表
     */
    List<Score> findByGrade(String grade);

    /**
     * 根据分数范围查询成绩列表
     *
     * @param minScore 最低分数
     * @param maxScore 最高分数
     * @return 成绩列表
     */
    List<Score> findByScoreBetween(Float minScore, Float maxScore);
} 